舉個例⼦來說,這個網址:
http://rubyonrails.com/posts/123
Rails 會根據 config/routes.rb 這個檔案的內容,比對在網址後⾯的
/posts/123 應該交給誰處理。假設檔案內容如下:
11 Routes
143
Rails.application.routes.draw do
get "/posts", to: "posts#index"
get "/posts/:id", to: "posts#show"
end
其中,這兩⾏:
get "/posts", to: "posts#index"
get "/posts/:id", to: "posts#show"
的意思就是,「當使⽤者輸入 /posts 這個網址,它會交由 posts#index 來處
理,意思是 PostsController 上的 index ⽅法;同理,當使⽤者輸入
/posts/123 這個網址之後,它會轉由 PostsController 上的 show ⽅法,
並且把 123 當做參數(:id)傳給 Controller」。
想像⼀下這個情境:
客⼈上⾨了...
客⼈:「你好,我想要看所有的⽂章列表(輸入網址 /posts )」
Route:「好的,我幫你轉接到 PostsController 部⾨的 index 櫃台,請
他幫您服務」
客⼈:「等等,我改變主意了,我只想要看第 87 號⽂章就好(輸入網址
/posts/87 )」
Route:「沒問題,請您⼀樣到 PostsController 部⾨,但這次請找 show
櫃台,並且把 87 這個號碼牌給他,他會替您調閱資料」
客⼈:「那請問可以給我看看使⽤者的列表嗎(輸入網址 /users )」
Route:「不好意思,⽬前我們沒有相關資料喔(回應 HTTP 404)」
Route 的⾓⾊就類似是這樣,負責解讀使⽤者輸入的網址,然後轉去對應的地⽅,
剩下的,就是 MVC(Model, View, Controller)的事了。